﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace c__基础
{
    //1：在namespace 语句块中声明
    //2；还可以在class和struct 中声明
    //enum E_自定义枚举名
    //{
    //    自定义枚举项名字1,   //枚举变量的值是累加形式 
    //    自定义枚举项名字2,
    //    自定义枚举项名字3,
    //    自定义枚举项名字4,
    //}
    enum E_MonsterType   //枚举的声明
    {
        normal,

        boss,
    }
    enum E_PlayerType
    {
        Main,

        Other   //不需要加逗号也可以
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            //自定义的枚举类型 变量名 = 自定义枚举类型.枚举项
            E_PlayerType PlayerType = E_PlayerType.Main;   //使得PlayerType成为常量
            //枚举和switch配合使用
            switch (PlayerType)
            {
                case E_PlayerType.Main:
                    Console.WriteLine("主玩家逻辑");
                    break;
                case E_PlayerType.Other:
                    Console.WriteLine("其它玩家逻辑");
                    break;
                default:
                    break;
            }
                    #region 枚举类型转换（与int 和 string 之间的转换） 
            //枚举转int
                    int i = (int)PlayerType;
                    Console.WriteLine(i);    //打印结果为0
            //int转枚举
            PlayerType = 0;
            //枚举转string
            string s = PlayerType.ToString();
            Console.WriteLine(s);    //打印结果为Main    
            //string 转枚举（比较复杂）
             
            //Parse后面的第一个参数  你要转为的是哪个枚举类型  第二个参数：用于转换对应枚举项的字符串
            //转化完成后是通用的类型  采用（）强转
             PlayerType = (E_PlayerType)Enum.Parse(typeof(E_PlayerType),"Main");
            Console.WriteLine(PlayerType);
            #endregion
            //枚举类型作用
            //比如玩家有一个动作状态，往往需要一个变量或标识来表示玩家所处的是哪一个动作状态
        }
    }
}
 // 